home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 001a / sendcom@.zip / PCBCOLOR.C < prev    next >
Text File  |  1991-10-10  |  2KB  |  69 lines

  1. #include <conio.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. #include "pcbcolor.h"
  6.  
  7. int ANSI;
  8. int    A_CLR[]={0,4,2,6,1,5,3,7,0,4};
  9.  
  10. char *make_ansi_str(char *pcbcode){
  11.         int fore,back,bmode,fmode;
  12.         static char buffer[20];
  13.         back=*pcbcode;
  14.         pcbcode++;
  15.         fore=*pcbcode;
  16.         if(back > '9'){ back-=15; bmode=A_BLINK;}
  17.         else bmode=A_NORMAL;
  18.         if(fore > '9'){ fore-=15; fmode=A_BOLD;}
  19.         else fmode=A_NORMAL;
  20.         fore-=48;
  21.         back-=48;
  22.         if((min(bmode,fmode))==bmode) /* If background mode is less then its normal */
  23.                 sprintf(buffer,"\33[%d;%d;3%d;4%dm",bmode,fmode,A_CLR[fore],A_CLR[back]);
  24.         else
  25.                 sprintf(buffer,"\33[%d;%d;3%d;4%dm",fmode,bmode,A_CLR[fore],A_CLR[back]);
  26.         return(buffer);
  27. }
  28.  
  29. char *pcb_printf(char *str){
  30.         int i;
  31.         static char buffer[255];
  32.         char *ptr,*ansi_str;
  33.         memset(buffer,'\0',255);
  34.         ptr=buffer;
  35.         while(*str!='\0'){
  36.                 if(*str=='@'){
  37.                         str++;
  38.                         if(ANSI==YES){
  39.                                 if(*str=='X'){
  40.                                         str++;
  41.                                         ansi_str=make_ansi_str(str);
  42.                                         for(i=0;i<12;i++){
  43.                                                 *ptr=*ansi_str;
  44.                                                 ansi_str++;
  45.                                                 ptr++;}
  46.                                         str++;
  47.                                         str++;
  48.                                 } else {
  49.                                         *ptr='@';
  50.                                         ptr++;
  51.                                         *ptr=*str;}
  52.                         } else {
  53.                                 if(*str=='X'){
  54.                                         str++;
  55.                                         str++;
  56.                                         str++;
  57.                                 } else {
  58.                                         *ptr='@';
  59.                                         ptr++;
  60.                                         *ptr=*str;}
  61.                         }
  62.                 }
  63.                 *ptr=*str;
  64.                 ptr++;
  65.                 str++;}
  66.         printf("%s",buffer);
  67.         return(buffer);
  68. }
  69.